This invention relates to program reliability, performance monitoring and problem resolution and, more particularly, to target application program supervision.
A number of prior software application supervision, i.e., program monitoring, apparatus and techniques are known in the art. However, these prior apparatus and techniques where limited to detecting and recovering from so-called process hangs and crashes. There also are prior known arrangements that support implementation of internal and external application program supervisors. Prior systems that support implementation of an internal application supervisor require that the target application program be modified, either by modifying the source code or by modifying the executable code. Similarly, prior systems that support implementation of an external application supervisor require extensive modifications to and recompilation of the source code. This is not only time consuming and difficult, but often impossible to implement because the source code is typically not available to a customer.
Problems and limitations of prior known fault monitoring, performance monitoring and fault tolerance apparatus and method for target application programs are overcome in an application supervisor by employing a supervisor agent, modified application programming interfaces (APIs), a generic application wrapper and a shell script that operate interactively to detect and automatically resolve reliability and performance problems occurring in executing the target application program. This is realized, in accordance with the invention, without the need to access, modify or have knowledge of the source code of the target application program to be supervised.
In a specific embodiment of the invention, Java(trademark) programming language applications are supervised. This is realized by employing the supervisor agent that attaches to a Java virtual machine through two virtual machine native interfaces. One interface is the Java Virtual Machine Profiler Interface (JVMPI) and the other is the Java Native Interface (JNI). In conjunction with the JVMPI and JNI, the supervisor agent can detect and respond, i.e., resolve prescribed events in an executing target application program. Other events that cannot be monitored through the JVMPI and JNI are propagated to the supervisor agent through a set of modified Java API classes. That is, the target application program is accessed through the modified API classes. In this manner, JAS is able to monitor events during the execution of the target application program. To start up the supervised target application program and process a configuration file, the application supervisor of this invention employs a generic application wrapper and a shell script.
It is important that JAS be easily configured, and still be flexible and powerful in order to supervise specific target application programs. This is realized by configuring JAS by parameterizing a set of policy templates in a configuration file. Each policy template is associated with a specific aspect of reliability or performance of either the entire target application program or a subclass of its threads or objects. Once a policy template has been parameterized, it becomes a policy that specifies what behavior the application supervisor should treat as an anomaly and how it should react to it once it is detected.
In another embodiment of the invention, events and actions of the executing target application program can be visualized in a remote manager that is connected to the supervisor agent via a customized protocol that uses a TCP/IP (transmission control protocol/internet protocol) transport mechanism. The remote manager may also request status information on the supervised target application program, as well as, initiate target application program supervision actions on its own.
A technical advantage of the invention is that it can detect and resolve an extensive range of reliability, as well as, performance problems including a complete target program process crash.